<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8"/>
    <title>report.html</title>
    <style>body {
  font-family: Helvetica, Arial, sans-serif;
  font-size: 12px;
  /* do not increase min-width as some may use split screens */
  min-width: 800px;
  color: #999;
}

h1 {
  font-size: 24px;
  color: black;
}

h2 {
  font-size: 16px;
  color: black;
}

p {
  color: black;
}

a {
  color: #999;
}

table {
  border-collapse: collapse;
}

/******************************
 * SUMMARY INFORMATION
 ******************************/
#environment td {
  padding: 5px;
  border: 1px solid #E6E6E6;
}
#environment tr:nth-child(odd) {
  background-color: #f6f6f6;
}

/******************************
 * TEST RESULT COLORS
 ******************************/
span.passed,
.passed .col-result {
  color: green;
}

span.skipped,
span.xfailed,
span.rerun,
.skipped .col-result,
.xfailed .col-result,
.rerun .col-result {
  color: orange;
}

span.error,
span.failed,
span.xpassed,
.error .col-result,
.failed .col-result,
.xpassed .col-result {
  color: red;
}

/******************************
 * RESULTS TABLE
 *
 * 1. Table Layout
 * 2. Extra
 * 3. Sorting items
 *
 ******************************/
/*------------------
 * 1. Table Layout
 *------------------*/
#results-table {
  border: 1px solid #e6e6e6;
  color: #999;
  font-size: 12px;
  width: 100%;
}
#results-table th,
#results-table td {
  padding: 5px;
  border: 1px solid #E6E6E6;
  text-align: left;
}
#results-table th {
  font-weight: bold;
}

/*------------------
 * 2. Extra
 *------------------*/
.log {
  background-color: #e6e6e6;
  border: 1px solid #e6e6e6;
  color: black;
  display: block;
  font-family: "Courier New", Courier, monospace;
  height: 230px;
  overflow-y: scroll;
  padding: 5px;
  white-space: pre-wrap;
}
.log:only-child {
  height: inherit;
}

div.image {
  border: 1px solid #e6e6e6;
  float: right;
  height: 240px;
  margin-left: 5px;
  overflow: hidden;
  width: 320px;
}
div.image img {
  width: 320px;
}

div.video {
  border: 1px solid #e6e6e6;
  float: right;
  height: 240px;
  margin-left: 5px;
  overflow: hidden;
  width: 320px;
}
div.video video {
  overflow: hidden;
  width: 320px;
  height: 240px;
}

.collapsed {
  display: none;
}

.expander::after {
  content: " (show details)";
  color: #BBB;
  font-style: italic;
  cursor: pointer;
}

.collapser::after {
  content: " (hide details)";
  color: #BBB;
  font-style: italic;
  cursor: pointer;
}

/*------------------
 * 3. Sorting items
 *------------------*/
.sortable {
  cursor: pointer;
}

.sort-icon {
  font-size: 0px;
  float: left;
  margin-right: 5px;
  margin-top: 5px;
  /*triangle*/
  width: 0;
  height: 0;
  border-left: 8px solid transparent;
  border-right: 8px solid transparent;
}
.inactive .sort-icon {
  /*finish triangle*/
  border-top: 8px solid #E6E6E6;
}
.asc.active .sort-icon {
  /*finish triangle*/
  border-bottom: 8px solid #999;
}
.desc.active .sort-icon {
  /*finish triangle*/
  border-top: 8px solid #999;
}
</style></head>
  <body onLoad="init()">
    <script>/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */


function toArray(iter) {
    if (iter === null) {
        return null;
    }
    return Array.prototype.slice.call(iter);
}

function find(selector, elem) { // eslint-disable-line no-redeclare
    if (!elem) {
        elem = document;
    }
    return elem.querySelector(selector);
}

function findAll(selector, elem) {
    if (!elem) {
        elem = document;
    }
    return toArray(elem.querySelectorAll(selector));
}

function sortColumn(elem) {
    toggleSortStates(elem);
    const colIndex = toArray(elem.parentNode.childNodes).indexOf(elem);
    let key;
    if (elem.classList.contains('result')) {
        key = keyResult;
    } else if (elem.classList.contains('links')) {
        key = keyLink;
    } else {
        key = keyAlpha;
    }
    sortTable(elem, key(colIndex));
}

function showAllExtras() { // eslint-disable-line no-unused-vars
    findAll('.col-result').forEach(showExtras);
}

function hideAllExtras() { // eslint-disable-line no-unused-vars
    findAll('.col-result').forEach(hideExtras);
}

function showExtras(colresultElem) {
    const extras = colresultElem.parentNode.nextElementSibling;
    const expandcollapse = colresultElem.firstElementChild;
    extras.classList.remove('collapsed');
    expandcollapse.classList.remove('expander');
    expandcollapse.classList.add('collapser');
}

function hideExtras(colresultElem) {
    const extras = colresultElem.parentNode.nextElementSibling;
    const expandcollapse = colresultElem.firstElementChild;
    extras.classList.add('collapsed');
    expandcollapse.classList.remove('collapser');
    expandcollapse.classList.add('expander');
}

function showFilters() {
    let visibleString = getQueryParameter('visible') || 'all';
    visibleString = visibleString.toLowerCase();
    const checkedItems = visibleString.split(',');

    const filterItems = document.getElementsByClassName('filter');
    for (let i = 0; i < filterItems.length; i++) {
        filterItems[i].hidden = false;

        if (visibleString != 'all') {
            filterItems[i].checked = checkedItems.includes(filterItems[i].getAttribute('data-test-result'));
            filterTable(filterItems[i]);
        }
    }
}

function addCollapse() {
    // Add links for show/hide all
    const resulttable = find('table#results-table');
    const showhideall = document.createElement('p');
    showhideall.innerHTML = '<a href="javascript:showAllExtras()">Show all details</a> / ' +
                            '<a href="javascript:hideAllExtras()">Hide all details</a>';
    resulttable.parentElement.insertBefore(showhideall, resulttable);

    // Add show/hide link to each result
    findAll('.col-result').forEach(function(elem) {
        const collapsed = getQueryParameter('collapsed') || 'Passed';
        const extras = elem.parentNode.nextElementSibling;
        const expandcollapse = document.createElement('span');
        if (extras.classList.contains('collapsed')) {
            expandcollapse.classList.add('expander');
        } else if (collapsed.includes(elem.innerHTML)) {
            extras.classList.add('collapsed');
            expandcollapse.classList.add('expander');
        } else {
            expandcollapse.classList.add('collapser');
        }
        elem.appendChild(expandcollapse);

        elem.addEventListener('click', function(event) {
            if (event.currentTarget.parentNode.nextElementSibling.classList.contains('collapsed')) {
                showExtras(event.currentTarget);
            } else {
                hideExtras(event.currentTarget);
            }
        });
    });
}

function getQueryParameter(name) {
    const match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

function init () { // eslint-disable-line no-unused-vars
    resetSortHeaders();

    addCollapse();

    showFilters();

    sortColumn(find('.initial-sort'));

    findAll('.sortable').forEach(function(elem) {
        elem.addEventListener('click',
            function() {
                sortColumn(elem);
            }, false);
    });
}

function sortTable(clicked, keyFunc) {
    const rows = findAll('.results-table-row');
    const reversed = !clicked.classList.contains('asc');
    const sortedRows = sort(rows, keyFunc, reversed);
    /* Whole table is removed here because browsers acts much slower
     * when appending existing elements.
     */
    const thead = document.getElementById('results-table-head');
    document.getElementById('results-table').remove();
    const parent = document.createElement('table');
    parent.id = 'results-table';
    parent.appendChild(thead);
    sortedRows.forEach(function(elem) {
        parent.appendChild(elem);
    });
    document.getElementsByTagName('BODY')[0].appendChild(parent);
}

function sort(items, keyFunc, reversed) {
    const sortArray = items.map(function(item, i) {
        return [keyFunc(item), i];
    });

    sortArray.sort(function(a, b) {
        const keyA = a[0];
        const keyB = b[0];

        if (keyA == keyB) return 0;

        if (reversed) {
            return keyA < keyB ? 1 : -1;
        } else {
            return keyA > keyB ? 1 : -1;
        }
    });

    return sortArray.map(function(item) {
        const index = item[1];
        return items[index];
    });
}

function keyAlpha(colIndex) {
    return function(elem) {
        return elem.childNodes[1].childNodes[colIndex].firstChild.data.toLowerCase();
    };
}

function keyLink(colIndex) {
    return function(elem) {
        const dataCell = elem.childNodes[1].childNodes[colIndex].firstChild;
        return dataCell == null ? '' : dataCell.innerText.toLowerCase();
    };
}

function keyResult(colIndex) {
    return function(elem) {
        const strings = ['Error', 'Failed', 'Rerun', 'XFailed', 'XPassed',
            'Skipped', 'Passed'];
        return strings.indexOf(elem.childNodes[1].childNodes[colIndex].firstChild.data);
    };
}

function resetSortHeaders() {
    findAll('.sort-icon').forEach(function(elem) {
        elem.parentNode.removeChild(elem);
    });
    findAll('.sortable').forEach(function(elem) {
        const icon = document.createElement('div');
        icon.className = 'sort-icon';
        icon.textContent = 'vvv';
        elem.insertBefore(icon, elem.firstChild);
        elem.classList.remove('desc', 'active');
        elem.classList.add('asc', 'inactive');
    });
}

function toggleSortStates(elem) {
    //if active, toggle between asc and desc
    if (elem.classList.contains('active')) {
        elem.classList.toggle('asc');
        elem.classList.toggle('desc');
    }

    //if inactive, reset all other functions and add ascending active
    if (elem.classList.contains('inactive')) {
        resetSortHeaders();
        elem.classList.remove('inactive');
        elem.classList.add('active');
    }
}

function isAllRowsHidden(value) {
    return value.hidden == false;
}

function filterTable(elem) { // eslint-disable-line no-unused-vars
    const outcomeAtt = 'data-test-result';
    const outcome = elem.getAttribute(outcomeAtt);
    const classOutcome = outcome + ' results-table-row';
    const outcomeRows = document.getElementsByClassName(classOutcome);

    for(let i = 0; i < outcomeRows.length; i++){
        outcomeRows[i].hidden = !elem.checked;
    }

    const rows = findAll('.results-table-row').filter(isAllRowsHidden);
    const allRowsHidden = rows.length == 0 ? true : false;
    const notFoundMessage = document.getElementById('not-found-message');
    notFoundMessage.hidden = !allRowsHidden;
}
</script>
    <h1>report.html</h1>
    <p>Report generated on 16-Apr-2024 at 22:41:37 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a> v3.2.0</p>
    <h2>Summary</h2>
    <p>7 tests ran in 0.80 seconds. </p>
    <p class="filter" hidden="true">(Un)check the boxes to filter the results.</p><input checked="true" class="filter" data-test-result="passed" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="passed">6 passed</span>, <input checked="true" class="filter" data-test-result="skipped" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="skipped">0 skipped</span>, <input checked="true" class="filter" data-test-result="failed" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="failed">1 failed</span>, <input checked="true" class="filter" data-test-result="error" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="error">0 errors</span>, <input checked="true" class="filter" data-test-result="xfailed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xfailed">0 expected failures</span>, <input checked="true" class="filter" data-test-result="xpassed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xpassed">0 unexpected passes</span>
    <h2>Results</h2>
    <table id="results-table">
      <thead id="results-table-head">
        <tr>
          <th class="sortable result initial-sort" col="result">Result</th>
          <th class="sortable" col="name">Test</th>
          <th class="sortable" col="duration">Duration</th>
          <th class="sortable links" col="links">Links</th></tr>
        <tr hidden="true" id="not-found-message">
          <th colspan="4">No results found. Try to check the filters</th></tr></thead>
      <tbody class="failed results-table-row">
        <tr>
          <td class="col-result">Failed</td>
          <td class="col-name">testcases/test_module01/test_qq.py::TestAPI::test_qq[case1]</td>
          <td class="col-duration">0.07</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"><span class="error">E   AssertionError: 断言失败，请检查日志！</span><br/> -------------------------------Captured log call-------------------------------- <br/>INFO     hjt:logger_util.py:64 /codes/requests_engine.py::13行                        **********************************************接口测试开始**********************************************
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::38行                         用例名称：222根据QQ号返回QQ昵称，QQ
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::92行                         请求方式：get
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::102行                        请求路径：https://api.oioweb.cn/api/qq/info
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::105行                        原始参数：{&#x27;headers&#x27;: {&#x27;Cookie&#x27;: &#x27;${read_config(Cookie)}&#x27;, &#x27;content-type&#x27;: &#x27;application/json&#x27;}, &#x27;params&#x27;: {&#x27;qq&#x27;: &#x27;599928887&#x27;}}
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::109行                        headers参数：{&#x27;Cookie&#x27;: &#x27;bk_token=V_YsWNnLieBhsG-wAdv6C_15LVQZJX8dGK3UagyWEwo;blueking_language=zh-cn;bk_itsm_csrftoken=ybrQDNAAIb4TPKDW0OANqVgtzVfs61rCGdaJM0baf8Hh5zkSeMlFCXVAngABDfyh;bk_itsm_sessionid=6mnb0xvr2olcwkr1d5j4xhp4k9co4s4e;bklogin_csrftoken=cqwb2qZMFyJXMYkYSolAx7DVCggmmEJITnnrGvBEc9IBwkXcHYr5Yaj3SiLHoBOL;sessionid=5etj22tgctpoqnr3xa76fenvqe4lwv41;recently_portal_id=1;&#x27;, &#x27;content-type&#x27;: &#x27;application/json&#x27;, &#x27;User-Agent&#x27;: &#x27;Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; Trident/3.0)&#x27;}
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::115行                        params参数: {&#x27;qq&#x27;: &#x27;599928887&#x27;}
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::128行                        响应状态码： 200
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::129行                        响应结果: {&quot;code&quot;:200,&quot;result&quot;:{&quot;user_id&quot;:599928887,&quot;nickname&quot;:&quot;叾屾&quot;,&quot;sex&quot;:&quot;unknown&quot;,&quot;age&quot;:0,&quot;area&quot;:&quot;&quot;},&quot;msg&quot;:&quot;success&quot;}
INFO     hjt:logger_util.py:64 /codes/hjt_assertion/basic_assert.py::45行             equals断言结果:【PASS】   |实际值: 200             ▉预期值: 200             ▉表达式: {&#x27;equals&#x27;: {&#x27;code&#x27;: 200}}.
INFO     hjt:logger_util.py:64 /codes/hjt_assertion/basic_assert.py::45行             equals断言结果:【PASS】   |实际值: success         ▉预期值: success         ▉表达式: {&#x27;equals&#x27;: {&#x27;msg&#x27;: &#x27;success&#x27;}}.
INFO     hjt:logger_util.py:64 /codes/hjt_assertion/basic_assert.py::45行             contains断言结果:【PASS】 |实际值:                 ▉预期值:                 ▉表达式: {&#x27;contains&#x27;: {&#x27;$response.area&#x27;: &#x27;&#x27;}}.
INFO     hjt:logger_util.py:64 /codes/hjt_assertion/basic_assert.py::45行             equals断言结果:【FAIL】   |实际值: 叾屾              ▉预期值: SHARK           ▉表达式: {&#x27;equals&#x27;: {&#x27;$s_upper($response.nickname)&#x27;: &#x27;SHARK&#x27;}}.
INFO     hjt:logger_util.py:64 /codes/hjt_assertion/basic_assert.py::45行             equals断言结果:【FAIL】   |实际值: unknown         ▉预期值: male            ▉表达式: {&#x27;equals&#x27;: {&#x27;sex&#x27;: &#x27;$read_extract(sex)&#x27;}}.
INFO     hjt:logger_util.py:64 /codes/hjt_assertion/basic_assert.py::45行             codes断言结果:【PASS】    |实际值: 200             ▉预期值: 200             ▉表达式: {&#x27;codes&#x27;: {&#x27;status_code&#x27;: 200}}.
INFO     hjt:logger_util.py:64 /codes/assert_engine.py::32行                          ---------断言失败!!!---------
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::146行                        断言报错，&lt;AssertionError&gt;:断言失败，请检查日志！
INFO     hjt:logger_util.py:64 /codes/requests_engine.py::49行                        **********************************************接口测试结束**********************************************<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">testcases/test_module01/test_qq.py::TestAPI::test_qq[case0]</td>
          <td class="col-duration">0.36</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -------------------------------Captured log call-------------------------------- <br/>INFO     hjt:logger_util.py:64 /codes/requests_engine.py::13行                        **********************************************接口测试开始**********************************************
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::38行                         用例名称：根据QQ号返回QQ昵称，QQ等级等信息
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::92行                         请求方式：get
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::102行                        请求路径：https://api.oioweb.cn/api/qq/info
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::105行                        原始参数：{&#x27;headers&#x27;: {&#x27;Cookie&#x27;: &#x27;${read_config(Cookie)}&#x27;, &#x27;content-type&#x27;: &#x27;application/json&#x27;}, &#x27;params&#x27;: {&#x27;qq&#x27;: &#x27;599928888&#x27;}}
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::109行                        headers参数：{&#x27;Cookie&#x27;: &#x27;bk_token=V_YsWNnLieBhsG-wAdv6C_15LVQZJX8dGK3UagyWEwo;blueking_language=zh-cn;bk_itsm_csrftoken=ybrQDNAAIb4TPKDW0OANqVgtzVfs61rCGdaJM0baf8Hh5zkSeMlFCXVAngABDfyh;bk_itsm_sessionid=6mnb0xvr2olcwkr1d5j4xhp4k9co4s4e;bklogin_csrftoken=cqwb2qZMFyJXMYkYSolAx7DVCggmmEJITnnrGvBEc9IBwkXcHYr5Yaj3SiLHoBOL;sessionid=5etj22tgctpoqnr3xa76fenvqe4lwv41;recently_portal_id=1;&#x27;, &#x27;content-type&#x27;: &#x27;application/json&#x27;, &#x27;User-Agent&#x27;: &#x27;Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; Trident/3.0)&#x27;}
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::115行                        params参数: {&#x27;qq&#x27;: &#x27;599928888&#x27;}
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::128行                        响应状态码： 200
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::129行                        响应结果: {&quot;code&quot;:200,&quot;result&quot;:{&quot;user_id&quot;:599928888,&quot;nickname&quot;:&quot;Shark&quot;,&quot;sex&quot;:&quot;male&quot;,&quot;age&quot;:116,&quot;area&quot;:&quot;格恩西岛&quot;},&quot;msg&quot;:&quot;success&quot;}
INFO     hjt:logger_util.py:64 /codes/hjt_extract_new/extract_engine.py::51行         提取Global变量：{nickname:Shark}
INFO     hjt:logger_util.py:64 /codes/hjt_extract_new/extract_engine.py::51行         提取Global变量：{sex:male}
INFO     hjt:logger_util.py:64 /codes/hjt_extract_new/extract_engine.py::84行         提取Local-class变量：{user_id:599928888}
INFO     hjt:logger_util.py:64 /codes/hjt_extract_new/extract_engine.py::84行         提取Local-class变量：{qq:599928888}
INFO     hjt:logger_util.py:64 /codes/hjt_extract_new/extract_engine.py::90行         提取Local-module变量：{age:116}
INFO     hjt:logger_util.py:64 /codes/hjt_assertion/basic_assert.py::45行             equals断言结果:【PASS】   |实际值: 200             ▉预期值: 200             ▉表达式: {&#x27;equals&#x27;: {&#x27;code&#x27;: 200}}.
INFO     hjt:logger_util.py:64 /codes/hjt_assertion/basic_assert.py::45行             equals断言结果:【PASS】   |实际值: success         ▉预期值: success         ▉表达式: {&#x27;equals&#x27;: {&#x27;msg&#x27;: &#x27;success&#x27;}}.
INFO     hjt:logger_util.py:64 /codes/hjt_assertion/basic_assert.py::45行             contains断言结果:【PASS】 |实际值: 格恩西岛            ▉预期值: 格恩              ▉表达式: {&#x27;contains&#x27;: {&#x27;$response.area&#x27;: &#x27;格恩&#x27;}}.
INFO     hjt:logger_util.py:64 /codes/hjt_assertion/basic_assert.py::45行             contains断言结果:【PASS】 |实际值: 116             ▉预期值:                 ▉表达式: {&#x27;contains&#x27;: {&quot;$response.result[&#x27;age&#x27;]&quot;: &#x27;&#x27;}}.
INFO     hjt:logger_util.py:64 /codes/hjt_assertion/basic_assert.py::45行             equals断言结果:【PASS】   |实际值: SHARK           ▉预期值: SHARK           ▉表达式: {&#x27;equals&#x27;: {&#x27;$s_upper($response.nickname)&#x27;: &#x27;SHARK&#x27;}}.
INFO     hjt:logger_util.py:64 /codes/hjt_assertion/basic_assert.py::45行             equals断言结果:【PASS】   |实际值: male            ▉预期值: male            ▉表达式: {&#x27;equals&#x27;: {&#x27;sex&#x27;: &#x27;$read_extract(sex)&#x27;}}.
INFO     hjt:logger_util.py:64 /codes/assert_engine.py::30行                          ---------断言成功!!!---------
INFO     hjt:logger_util.py:64 /codes/requests_engine.py::49行                        **********************************************接口测试结束**********************************************<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">testcases/test_module01/test_qq.py::TestAPI::test_qq_vip[case0]</td>
          <td class="col-duration">0.06</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -------------------------------Captured log call-------------------------------- <br/>INFO     hjt:logger_util.py:64 /codes/requests_engine.py::13行                        **********************************************接口测试开始**********************************************
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::38行                         用例名称：查询QQ会员信息
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::92行                         请求方式：get
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::102行                        请求路径：https://api.oioweb.cn/api/qq/vip
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::105行                        原始参数：{&#x27;headers&#x27;: {&#x27;Cookie&#x27;: &#x27;${read_config(Cookie)}&#x27;, &#x27;content-type&#x27;: &#x27;application/json&#x27;}, &#x27;params&#x27;: {&#x27;qq&#x27;: &#x27;599928887&#x27;}}
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::109行                        headers参数：{&#x27;Cookie&#x27;: &#x27;bk_token=V_YsWNnLieBhsG-wAdv6C_15LVQZJX8dGK3UagyWEwo;blueking_language=zh-cn;bk_itsm_csrftoken=ybrQDNAAIb4TPKDW0OANqVgtzVfs61rCGdaJM0baf8Hh5zkSeMlFCXVAngABDfyh;bk_itsm_sessionid=6mnb0xvr2olcwkr1d5j4xhp4k9co4s4e;bklogin_csrftoken=cqwb2qZMFyJXMYkYSolAx7DVCggmmEJITnnrGvBEc9IBwkXcHYr5Yaj3SiLHoBOL;sessionid=5etj22tgctpoqnr3xa76fenvqe4lwv41;recently_portal_id=1;&#x27;, &#x27;content-type&#x27;: &#x27;application/json&#x27;, &#x27;User-Agent&#x27;: &#x27;Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; Trident/3.0)&#x27;}
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::115行                        params参数: {&#x27;qq&#x27;: &#x27;599928887&#x27;}
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::128行                        响应状态码： 200
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::129行                        响应结果: {&quot;code&quot;:200,&quot;result&quot;:{&quot;iSpeedType&quot;:&quot;0&quot;,&quot;iSqq&quot;:&quot;0&quot;,&quot;Lxby&quot;:&quot;0&quot;,&quot;iBigClubGrowth&quot;:&quot;1&quot;,&quot;iDailySign&quot;:&quot;0&quot;,&quot;iNoHideOnlineTime&quot;:&quot;0&quot;,&quot;iPCQQOnlineTime&quot;:&quot;9547&quot;,&quot;iSmallWorld&quot;:&quot;0&quot;,&quot;iTotalActiveDay&quot;:&quot;16623&quot;,&quot;sFaceUrl&quot;:&quot;https://qh.qlogo.cn/g?b=sdk&amp;ek=AQRqeYicaVmvicrhADfGtmjRp0bNkSDln13NQIECnnEV7aRyfU0DtU3eZx9ianTsm1QhyzaQibes&amp;s=100&amp;t=1690890759&quot;,&quot;sNickName&quot;:&quot;叾屾&quot;,&quot;iVipLevel&quot;:&quot;9&quot;,&quot;iBigClubVipFlag&quot;:&quot;0&quot;,&quot;iContinueLogin&quot;:&quot;0&quot;,&quot;iMaxLvlRealDays&quot;:&quot;1.6&quot;,&quot;iPCQQOnline&quot;:&quot;1&quot;,&quot;iTotalDays&quot;:&quot;8.9&quot;,&quot;iVip&quot;:&quot;1&quot;,&quot;WeishiVideoview&quot;:&quot;0&quot;,&quot;iAddFriend&quot;:&quot;0&quot;,&quot;iNextLevelDay&quot;:&quot;14&quot;,&quot;iVipSpeedRate&quot;:&quot;0&quot;,&quot;speedStar&quot;:&quot;0&quot;,&quot;SVIPStar&quot;:&quot;0&quot;,&quot;iMaxLvlTotalDays&quot;:&quot;12.1&quot;,&quot;iMobileQQOnlineTime&quot;:&quot;0&quot;,&quot;iQQSportStep&quot;:&quot;0&quot;,&quot;iQzoneState&quot;:&quot;0&quot;,&quot;iYearBigClubFlag&quot;:&quot;0&quot;,&quot;iRealDays&quot;:&quot;0.5&quot;,&quot;iSqqSpeedRate&quot;:&quot;0&quot;,&quot;iSvrDays&quot;:&quot;0.0&quot;,&quot;iCmshowActive&quot;:&quot;0&quot;,&quot;iQQLevel&quot;:&quot;126&quot;,&quot;iSVip&quot;:&quot;1&quot;,&quot;iYearVip&quot;:&quot;1&quot;,&quot;iNoHideOnline&quot;:&quot;0&quot;,&quot;speedStarv3&quot;:&quot;0&quot;,&quot;QzoneVisitor&quot;:&quot;0&quot;,&quot;iBigClubLevel&quot;:&quot;1&quot;,&quot;iCostMs&quot;:&quot;46&quot;,&quot;iMobileGameOnline&quot;:&quot;0&quot;,&quot;iMobileQQOnline&quot;:&quot;0&quot;,&quot;iMqing&quot;:&quot;0&quot;,&quot;iBaseDays&quot;:&quot;0.5&quot;,&quot;iBigClubSpeed&quot;:&quot;-20&quot;,&quot;iMedal&quot;:&quot;0&quot;,&quot;iPCSafeOnline&quot;:&quot;0&quot;,&quot;iSqqLevel&quot;:&quot;0&quot;,&quot;speedStarv2&quot;:&quot;0&quot;},&quot;msg&quot;:&quot;success&quot;}
INFO     hjt:logger_util.py:64 /codes/hjt_assertion/basic_assert.py::45行             equals断言结果:【PASS】   |实际值: 200             ▉预期值: 200             ▉表达式: {&#x27;equals&#x27;: {&#x27;code&#x27;: 200}}.
INFO     hjt:logger_util.py:64 /codes/hjt_assertion/basic_assert.py::45行             equals断言结果:【PASS】   |实际值: success         ▉预期值: success         ▉表达式: {&#x27;equals&#x27;: {&#x27;msg&#x27;: &#x27;success&#x27;}}.
INFO     hjt:logger_util.py:64 /codes/assert_engine.py::30行                          ---------断言成功!!!---------
INFO     hjt:logger_util.py:64 /codes/requests_engine.py::49行                        **********************************************接口测试结束**********************************************<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">testcases/test_module01/test_qq.py::TestAPI::test3</td>
          <td class="col-duration">0.00</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -------------------------------Captured log call-------------------------------- <br/>INFO     hjt:logger_util.py:64 /testcases/test_module01/test_qq.py::20行              tt3函数, 当前test类的局部变量：age=116<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">testcases/test_module01/test_qq.py::TestAPI2::test_weather[case0]</td>
          <td class="col-duration">0.08</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -------------------------------Captured log call-------------------------------- <br/>INFO     hjt:logger_util.py:64 /codes/requests_engine.py::13行                        **********************************************接口测试开始**********************************************
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::38行                         用例名称：天气查询-自定义地区
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::92行                         请求方式：get
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::102行                        请求路径：https://api.oioweb.cn/api/weather/weather
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::105行                        原始参数：{&#x27;headers&#x27;: {&#x27;Cookie&#x27;: &#x27;${read_config(Cookie)}&#x27;, &#x27;content-type&#x27;: &#x27;application/json&#x27;}, &#x27;params&#x27;: {&#x27;city_name&#x27;: &#x27;深圳市&#x27;}}
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::109行                        headers参数：{&#x27;Cookie&#x27;: &#x27;bk_token=V_YsWNnLieBhsG-wAdv6C_15LVQZJX8dGK3UagyWEwo;blueking_language=zh-cn;bk_itsm_csrftoken=ybrQDNAAIb4TPKDW0OANqVgtzVfs61rCGdaJM0baf8Hh5zkSeMlFCXVAngABDfyh;bk_itsm_sessionid=6mnb0xvr2olcwkr1d5j4xhp4k9co4s4e;bklogin_csrftoken=cqwb2qZMFyJXMYkYSolAx7DVCggmmEJITnnrGvBEc9IBwkXcHYr5Yaj3SiLHoBOL;sessionid=5etj22tgctpoqnr3xa76fenvqe4lwv41;recently_portal_id=1;&#x27;, &#x27;content-type&#x27;: &#x27;application/json&#x27;, &#x27;User-Agent&#x27;: &#x27;Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1; Trident/3.0)&#x27;}
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::115行                        params参数: {&#x27;city_name&#x27;: &#x27;深圳市&#x27;}
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::128行                        响应状态码： 200
INFO     hjt:logger_util.py:64 /codes/basic_requests.py::129行                        响应结果: {&quot;code&quot;:200,&quot;result&quot;:{&quot;alert&quot;:null,&quot;aqi&quot;:26,&quot;city_name&quot;:&quot;深圳&quot;,&quot;current_condition&quot;:&quot;晴&quot;,&quot;current_temperature&quot;:26,&quot;current_time&quot;:1713276756,&quot;dat_condition&quot;:&quot;多云&quot;,&quot;dat_high_temperature&quot;:31,&quot;dat_low_temperature&quot;:25,&quot;dat_weather_icon_id&quot;:&quot;1&quot;,&quot;day_condition&quot;:&quot;多云&quot;,&quot;download_icon&quot;:1,&quot;forecast_list&quot;:[{&quot;condition&quot;:&quot;多云&quot;,&quot;date&quot;:&quot;2024-04-15&quot;,&quot;high_temperature&quot;:&quot;31&quot;,&quot;low_temperature&quot;:&quot;25&quot;,&quot;weather_icon_id&quot;:&quot;1&quot;,&quot;wind_direction&quot;:&quot;南风&quot;,&quot;wind_level&quot;:&quot;3&quot;},{&quot;condition&quot;:&quot;多云&quot;,&quot;date&quot;:&quot;2024-04-16&quot;,&quot;high_temperature&quot;:&quot;32&quot;,&quot;low_temperature&quot;:&quot;24&quot;,&quot;weather_icon_id&quot;:&quot;1&quot;,&quot;wind_direction&quot;:&quot;北风&quot;,&quot;wind_level&quot;:&quot;1&quot;},{&quot;condition&quot;:&quot;多云&quot;,&quot;date&quot;:&quot;2024-04-17&quot;,&quot;high_temperature&quot;:&quot;31&quot;,&quot;low_temperature&quot;:&quot;25&quot;,&quot;weather_icon_id&quot;:&quot;1&quot;,&quot;wind_direction&quot;:&quot;北风&quot;,&quot;wind_level&quot;:&quot;1&quot;},{&quot;condition&quot;:&quot;多云&quot;,&quot;date&quot;:&quot;2024-04-18&quot;,&quot;high_temperature&quot;:&quot;31&quot;,&quot;low_temperature&quot;:&quot;25&quot;,&quot;weather_icon_id&quot;:&quot;1&quot;,&quot;wind_direction&quot;:&quot;南风&quot;,&quot;wind_level&quot;:&quot;3&quot;},{&quot;condition&quot;:&quot;多云&quot;,&quot;date&quot;:&quot;2024-04-19&quot;,&quot;high_temperature&quot;:&quot;30&quot;,&quot;low_temperature&quot;:&quot;25&quot;,&quot;weather_icon_id&quot;:&quot;1&quot;,&quot;wind_direction&quot;:&quot;南风&quot;,&quot;wind_level&quot;:&quot;3&quot;},{&quot;condition&quot;:&quot;多云转雷阵雨&quot;,&quot;date&quot;:&quot;2024-04-20&quot;,&quot;high_temperature&quot;:&quot;30&quot;,&quot;low_temperature&quot;:&quot;23&quot;,&quot;weather_icon_id&quot;:&quot;1&quot;,&quot;wind_direction&quot;:&quot;南风&quot;,&quot;wind_level&quot;:&quot;3&quot;},{&quot;condition&quot;:&quot;雷阵雨&quot;,&quot;date&quot;:&quot;2024-04-21&quot;,&quot;high_temperature&quot;:&quot;28&quot;,&quot;low_temperature&quot;:&quot;22&quot;,&quot;weather_icon_id&quot;:&quot;4&quot;,&quot;wind_direction&quot;:&quot;北风&quot;,&quot;wind_level&quot;:&quot;1&quot;},{&quot;condition&quot;:&quot;雷阵雨&quot;,&quot;date&quot;:&quot;2024-04-22&quot;,&quot;high_temperature&quot;:&quot;28&quot;,&quot;low_temperature&quot;:&quot;22&quot;,&quot;weather_icon_id&quot;:&quot;4&quot;,&quot;wind_direction&quot;:&quot;南风&quot;,&quot;wind_level&quot;:&quot;3&quot;},{&quot;condition&quot;:&quot;小雨转晴&quot;,&quot;date&quot;:&quot;2024-04-23&quot;,&quot;high_temperature&quot;:&quot;28&quot;,&quot;low_temperature&quot;:&quot;22&quot;,&quot;weather_icon_id&quot;:&quot;7&quot;,&quot;wind_direction&quot;:&quot;北风&quot;,&quot;wind_level&quot;:&quot;1&quot;},{&quot;condition&quot;:&quot;小雨&quot;,&quot;date&quot;:&quot;2024-04-24&quot;,&quot;high_temperature&quot;:&quot;29&quot;,&quot;low_temperature&quot;:&quot;22&quot;,&quot;weather_icon_id&quot;:&quot;7&quot;,&quot;wind_direction&quot;:&quot;东风&quot;,&quot;wind_level&quot;:&quot;1&quot;},{&quot;condition&quot;:&quot;小雨&quot;,&quot;date&quot;:&quot;2024-04-25&quot;,&quot;high_temperature&quot;:&quot;28&quot;,&quot;low_temperature&quot;:&quot;26&quot;,&quot;weather_icon_id&quot;:&quot;7&quot;,&quot;wind_direction&quot;:&quot;东南风&quot;,&quot;wind_level&quot;:&quot;1&quot;},{&quot;condition&quot;:&quot;小雨&quot;,&quot;date&quot;:&quot;2024-04-26&quot;,&quot;high_temperature&quot;:&quot;28&quot;,&quot;low_temperature&quot;:&quot;25&quot;,&quot;weather_icon_id&quot;:&quot;7&quot;,&quot;wind_direction&quot;:&quot;西南风&quot;,&quot;wind_level&quot;:&quot;1&quot;},{&quot;condition&quot;:&quot;小雨&quot;,&quot;date&quot;:&quot;2024-04-27&quot;,&quot;high_temperature&quot;:&quot;26&quot;,&quot;low_temperature&quot;:&quot;25&quot;,&quot;weather_icon_id&quot;:&quot;7&quot;,&quot;wind_direction&quot;:&quot;南风&quot;,&quot;wind_level&quot;:&quot;1&quot;},{&quot;condition&quot;:&quot;小雨转阴&quot;,&quot;date&quot;:&quot;2024-04-28&quot;,&quot;high_temperature&quot;:&quot;31&quot;,&quot;low_temperature&quot;:&quot;25&quot;,&quot;weather_icon_id&quot;:&quot;7&quot;,&quot;wind_direction&quot;:&quot;东风&quot;,&quot;wind_level&quot;:&quot;1&quot;},{&quot;condition&quot;:&quot;阴&quot;,&quot;date&quot;:&quot;2024-04-29&quot;,&quot;high_temperature&quot;:&quot;32&quot;,&quot;low_temperature&quot;:&quot;25&quot;,&quot;weather_icon_id&quot;:&quot;2&quot;,&quot;wind_direction&quot;:&quot;南风&quot;,&quot;wind_level&quot;:&quot;2&quot;},{&quot;condition&quot;:&quot;阴转小雨&quot;,&quot;date&quot;:&quot;2024-04-30&quot;,&quot;high_temperature&quot;:&quot;27&quot;,&quot;low_temperature&quot;:&quot;22&quot;,&quot;weather_icon_id&quot;:&quot;2&quot;,&quot;wind_direction&quot;:&quot;东风&quot;,&quot;wind_level&quot;:&quot;2&quot;}],&quot;high_temperature&quot;:32,&quot;hourly_forecast&quot;:[{&quot;condition&quot;:&quot;晴&quot;,&quot;hour&quot;:&quot;21&quot;,&quot;temperature&quot;:&quot;27&quot;,&quot;weather_icon_id&quot;:&quot;30&quot;,&quot;wind_direction&quot;:&quot;SE&quot;,&quot;wind_level&quot;:&quot;4.00&quot;},{&quot;condition&quot;:&quot;晴&quot;,&quot;hour&quot;:&quot;22&quot;,&quot;temperature&quot;:&quot;25&quot;,&quot;weather_icon_id&quot;:&quot;30&quot;,&quot;wind_direction&quot;:&quot;SW&quot;,&quot;wind_level&quot;:&quot;14.80&quot;},{&quot;condition&quot;:&quot;少云&quot;,&quot;hour&quot;:&quot;23&quot;,&quot;temperature&quot;:&quot;25&quot;,&quot;weather_icon_id&quot;:&quot;31&quot;,&quot;wind_direction&quot;:&quot;SW&quot;,&quot;wind_level&quot;:&quot;13.00&quot;},{&quot;condition&quot;:&quot;少云&quot;,&quot;hour&quot;:&quot;0&quot;,&quot;temperature&quot;:&quot;25&quot;,&quot;weather_icon_id&quot;:&quot;31&quot;,&quot;wind_direction&quot;:&quot;SW&quot;,&quot;wind_level&quot;:&quot;13.00&quot;},{&quot;condition&quot;:&quot;少云&quot;,&quot;hour&quot;:&quot;1&quot;,&quot;temperature&quot;:&quot;25&quot;,&quot;weather_icon_id&quot;:&quot;31&quot;,&quot;wind_direction&quot;:&quot;S&quot;,&quot;wind_level&quot;:&quot;14.80&quot;},{&quot;condition&quot;:&quot;多云&quot;,&quot;hour&quot;:&quot;2&quot;,&quot;temperature&quot;:&quot;24&quot;,&quot;weather_icon_id&quot;:&quot;31&quot;,&quot;wind_direction&quot;:&quot;S&quot;,&quot;wind_level&quot;:&quot;14.80&quot;},{&quot;condition&quot;:&quot;多云&quot;,&quot;hour&quot;:&quot;3&quot;,&quot;temperature&quot;:&quot;24&quot;,&quot;weather_icon_id&quot;:&quot;31&quot;,&quot;wind_direction&quot;:&quot;S&quot;,&quot;wind_level&quot;:&quot;13.00&quot;},{&quot;condition&quot;:&quot;少云&quot;,&quot;hour&quot;:&quot;4&quot;,&quot;temperature&quot;:&quot;24&quot;,&quot;weather_icon_id&quot;:&quot;31&quot;,&quot;wind_direction&quot;:&quot;SW&quot;,&quot;wind_level&quot;:&quot;13.00&quot;},{&quot;condition&quot;:&quot;多云&quot;,&quot;hour&quot;:&quot;5&quot;,&quot;temperature&quot;:&quot;24&quot;,&quot;weather_icon_id&quot;:&quot;31&quot;,&quot;wind_direction&quot;:&quot;SW&quot;,&quot;wind_level&quot;:&quot;11.09&quot;},{&quot;condition&quot;:&quot;少云&quot;,&quot;hour&quot;:&quot;6&quot;,&quot;temperature&quot;:&quot;25&quot;,&quot;weather_icon_id&quot;:&quot;31&quot;,&quot;wind_direction&quot;:&quot;SW&quot;,&quot;wind_level&quot;:&quot;11.09&quot;},{&quot;condition&quot;:&quot;阵雨&quot;,&quot;hour&quot;:&quot;7&quot;,&quot;temperature&quot;:&quot;25&quot;,&quot;weather_icon_id&quot;:&quot;3&quot;,&quot;wind_direction&quot;:&quot;SW&quot;,&quot;wind_level&quot;:&quot;11.09&quot;},{&quot;condition&quot;:&quot;阵雨&quot;,&quot;hour&quot;:&quot;8&quot;,&quot;temperature&quot;:&quot;26&quot;,&quot;weather_icon_id&quot;:&quot;3&quot;,&quot;wind_direction&quot;:&quot;S&quot;,&quot;wind_level&quot;:&quot;13.00&quot;},{&quot;condition&quot;:&quot;阵雨&quot;,&quot;hour&quot;:&quot;9&quot;,&quot;temperature&quot;:&quot;27&quot;,&quot;weather_icon_id&quot;:&quot;3&quot;,&quot;wind_direction&quot;:&quot;SW&quot;,&quot;wind_level&quot;:&quot;14.80&quot;},{&quot;condition&quot;:&quot;阵雨&quot;,&quot;hour&quot;:&quot;10&quot;,&quot;temperature&quot;:&quot;28&quot;,&quot;weather_icon_id&quot;:&quot;3&quot;,&quot;wind_direction&quot;:&quot;SW&quot;,&quot;wind_level&quot;:&quot;16.70&quot;},{&quot;condition&quot;:&quot;阵雨&quot;,&quot;hour&quot;:&quot;11&quot;,&quot;temperature&quot;:&quot;30&quot;,&quot;weather_icon_id&quot;:&quot;3&quot;,&quot;wind_direction&quot;:&quot;SW&quot;,&quot;wind_level&quot;:&quot;18.50&quot;},{&quot;condition&quot;:&quot;阵雨&quot;,&quot;hour&quot;:&quot;12&quot;,&quot;temperature&quot;:&quot;30&quot;,&quot;weather_icon_id&quot;:&quot;3&quot;,&quot;wind_direction&quot;:&quot;SW&quot;,&quot;wind_level&quot;:&quot;20.41&quot;},{&quot;condition&quot;:&quot;阵雨&quot;,&quot;hour&quot;:&quot;13&quot;,&quot;temperature&quot;:&quot;30&quot;,&quot;weather_icon_id&quot;:&quot;3&quot;,&quot;wind_direction&quot;:&quot;SW&quot;,&quot;wind_level&quot;:&quot;20.41&quot;},{&quot;condition&quot;:&quot;阵雨&quot;,&quot;hour&quot;:&quot;14&quot;,&quot;temperature&quot;:&quot;31&quot;,&quot;weather_icon_id&quot;:&quot;3&quot;,&quot;wind_direction&quot;:&quot;SW&quot;,&quot;wind_level&quot;:&quot;20.41&quot;},{&quot;condition&quot;:&quot;多云&quot;,&quot;hour&quot;:&quot;15&quot;,&quot;temperature&quot;:&quot;30&quot;,&quot;weather_icon_id&quot;:&quot;1&quot;,&quot;wind_direction&quot;:&quot;S&quot;,&quot;wind_level&quot;:&quot;22.21&quot;},{&quot;condition&quot;:&quot;少云&quot;,&quot;hour&quot;:&quot;16&quot;,&quot;temperature&quot;:&quot;30&quot;,&quot;weather_icon_id&quot;:&quot;1&quot;,&quot;wind_direction&quot;:&quot;S&quot;,&quot;wind_level&quot;:&quot;22.21&quot;},{&quot;condition&quot;:&quot;少云&quot;,&quot;hour&quot;:&quot;17&quot;,&quot;temperature&quot;:&quot;29&quot;,&quot;weather_icon_id&quot;:&quot;1&quot;,&quot;wind_direction&quot;:&quot;S&quot;,&quot;wind_level&quot;:&quot;20.41&quot;},{&quot;condition&quot;:&quot;多云&quot;,&quot;hour&quot;:&quot;18&quot;,&quot;temperature&quot;:&quot;28&quot;,&quot;weather_icon_id&quot;:&quot;1&quot;,&quot;wind_direction&quot;:&quot;S&quot;,&quot;wind_level&quot;:&quot;20.41&quot;},{&quot;condition&quot;:&quot;多云&quot;,&quot;hour&quot;:&quot;19&quot;,&quot;temperature&quot;:&quot;27&quot;,&quot;weather_icon_id&quot;:&quot;31&quot;,&quot;wind_direction&quot;:&quot;SW&quot;,&quot;wind_level&quot;:&quot;18.50&quot;},{&quot;condition&quot;:&quot;多云&quot;,&quot;hour&quot;:&quot;20&quot;,&quot;temperature&quot;:&quot;27&quot;,&quot;weather_icon_id&quot;:&quot;31&quot;,&quot;wind_direction&quot;:&quot;N&quot;,&quot;wind_level&quot;:&quot;3.20&quot;},{&quot;condition&quot;:&quot;多云&quot;,&quot;hour&quot;:&quot;21&quot;,&quot;temperature&quot;:&quot;26&quot;,&quot;weather_icon_id&quot;:&quot;31&quot;,&quot;wind_direction&quot;:&quot;N&quot;,&quot;wind_level&quot;:&quot;3.20&quot;}],&quot;low_temperature&quot;:24,&quot;moji_city_id&quot;:892,&quot;night_condition&quot;:&quot;多云&quot;,&quot;origin_data&quot;:[],&quot;quality_level&quot;:&quot;优&quot;,&quot;tips&quot;:&quot;略微偏热，注意衣物变化。&quot;,&quot;tomorrow_aqi&quot;:44,&quot;tomorrow_condition&quot;:&quot;多云&quot;,&quot;tomorrow_high_temperature&quot;:31,&quot;tomorrow_low_temperature&quot;:25,&quot;tomorrow_quality_level&quot;:&quot;优&quot;,&quot;tomorrow_weather_icon_id&quot;:&quot;1&quot;,&quot;update_time&quot;:&quot;2024-04-16 21:51:03&quot;,&quot;weather_icon_id&quot;:&quot;30&quot;,&quot;wind_direction&quot;:&quot;南风&quot;,&quot;wind_level&quot;:2},&quot;msg&quot;:&quot;success&quot;}
INFO     hjt:logger_util.py:64 /codes/hjt_extract_new/extract_engine.py::84行         提取Local-class变量：{current_condition:晴}
INFO     hjt:logger_util.py:64 /codes/hjt_extract_new/extract_engine.py::90行         提取Local-module变量：{city_name:深圳}
INFO     hjt:logger_util.py:64 /codes/hjt_extract_new/extract_engine.py::90行         提取Local-module变量：{current_temperature:26}
INFO     hjt:logger_util.py:64 /codes/hjt_assertion/basic_assert.py::45行             equals断言结果:【PASS】   |实际值: 200             ▉预期值: 200             ▉表达式: {&#x27;equals&#x27;: {&#x27;code&#x27;: 200}}.
INFO     hjt:logger_util.py:64 /codes/assert_engine.py::30行                          ---------断言成功!!!---------
INFO     hjt:logger_util.py:64 /codes/requests_engine.py::49行                        **********************************************接口测试结束**********************************************<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">testcases/test_module01/test_qq.py::TestAPI2::test2</td>
          <td class="col-duration">0.00</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -------------------------------Captured log call-------------------------------- <br/>INFO     hjt:logger_util.py:64 /testcases/test_module01/test_qq.py::31行              当前测试类中的局部变量：current_condition=晴<br/></div></td></tr></tbody>
      <tbody class="passed results-table-row">
        <tr>
          <td class="col-result">Passed</td>
          <td class="col-name">testcases/test_module01/test_qq.py::TestAPI2::test3</td>
          <td class="col-duration">0.00</td>
          <td class="col-links"></td></tr>
        <tr>
          <td class="extra" colspan="4">
            <div class="log"> -------------------------------Captured log call-------------------------------- <br/>INFO     hjt:logger_util.py:64 /testcases/test_module01/test_qq.py::35行              当前测试模块中的变量: age=116
INFO     hjt:logger_util.py:64 /testcases/test_module01/test_qq.py::36行              当前测试模块中的变量: city_name=深圳
INFO     hjt:logger_util.py:64 /testcases/test_module01/test_qq.py::37行              当前测试模块中的变量: current_temperature=26<br/></div></td></tr></tbody></table></body></html>